# -*- coding: utf-8 -*-
import sys
from pathlib import Path
sys.path.append(str(Path(__file__).parent.parent))  # 将项目根目录加入Python路径
from fastapi import FastAPI,Request
import uvicorn, time
from fastapi.middleware.cors import CORSMiddleware
from fastapi import FastAPI
from config import Config
import time
from functools import wraps
from enterprise_func import fixed_returns
from fastapi.responses import StreamingResponse

app = FastAPI()

import logging

# 全局日志配置
def setup_logging():
    logging.basicConfig(
        level=logging.INFO,
        format='%(asctime)s %(levelname)s %(name)s %(message)s',
        handlers=[
            logging.StreamHandler(),  # 控制台打印
            # logging.FileHandler('app.log'),  # 如果想写文件，取消注释
        ]
    )




def timing_decorator(func):
    @wraps(func)  # 加上这个！
    async def wrapper(*args, **kwargs):
        start_time = time.time()
        result = await func(*args, **kwargs)
        duration = time.time() - start_time
        print(f"接口 {func.__name__} 执行耗时: {duration:.3f}秒")
        return result
    return wrapper


def getResult(data):
    return {'data': data, 'code': 200}

def getResultMsg(data, msg, code):
    return {'data': data, 'code': code, 'msg': msg}

def getSuccess(msg):
    return {'code': 200, 'msg': msg}

def getError(msg, code):
    return {'code': code, 'msg': msg}


@app.get("/decision/support")
@timing_decorator
async def decision_support():
    try:
        # 
        data = {
                "suggestion": "合格",
                "score": "47.5分",
                "enterpriseName": "深圳市赋风科技有限公司", # 公司名称
                "display": {
                    "average": 47.5,
                    "recommend": "一般推荐"
                },
                # 雷达图
                "radar_chart": {
                    "develop": 78, # 成长能力
                    "innovation": 72, # 创新能力
                    "status": 87, # 经营现状
                    "credit": 28, # 信用风险
                    "abnormal": 35 # 异动风险
                },
                "report":[
                {
                    "content": "赋风科技有限公司作为高新技术企业，契合南山区对创新型企业、数字经济企业的支持方向。虽暂未达部分特定企业认定标准，但凭借政务数字化领域的技术与经验，有潜力争取专精特新等政策扶持。若进一步提升规模与影响力，在产业用房购置或租赁方面可降低成本，推动规模化发展。",
                    "title":"综合评估"
                },# 综合评估
                {
                    "content": "赋风科技有限公司2023 年营收 8298 万元，中标多地政府项目，带动区域数字经济发展，促进产业链融合，创造就业机会。其业务布局与贡献，使其有潜力成为南山区重点支持对象，获取政策资源促进产业贡献提升。", 
                    "title":"一、经济贡献"
                },# 一、经济贡献
                {
                    "content": "企业 2023 年营收 8298 万元，中标 24 个政府项目，客户众多。技术壁垒高且积极拓展业务领域，运营效能良好。若合理运用产业用房政策扶持，将进一步提升运营效能，实现资源优化配置与利用。", 
                    "title":"二、经营能力评估"
                },# 二、经营能力评估
                {
                    "content": "赋风科技有限公司创新成果丰硕，拥有 20 项专利、19 项软著，主导标杆项目，积极开展产学研合作。符合南山区鼓励创新、构建创新生态的导向，有望借助政策扶持强化创新优势，促进成果转化与产业应用，推动区域创新生态构建。", 
                    "title":"三、创新能力评估"
                },# 三、创新能力评估
                {
                    "content": "赋风科技有限公司成立 3 年成绩显著，客户覆盖广，业务增速快。结合产业用房政策对企业成长的扶持，有望加速成长，未来 3 年内实现非政务业务占比提升目标，成为更有影响力的企业。有效利用政策资源，将助力其在市场竞争中快速发展。", 
                    "title":"四、成长能力评估"
                },# 四、成长能力评估
                {
                    "content": "赋风科技有限公司经营稳定，无重大风险预警。但需关注数据接口政策变动、AI 领域竞争压力，以及政务客户占比高的依赖风险。在产业用房政策申请与使用中，要留意政策变化与申报条件合规性，保障产业空间布局与运营的稳定性与可持续性。" ,
                    "title":"五、企业风险评估"
                }# 五、企业风险评估
                ]
                
            }
        return getResultMsg(data,"请求成功",200)
    except Exception as e:
        return getError(str(e), 500)



@app.get("/question/business")
@timing_decorator
async def test(request:Request):
    try:
        return StreamingResponse(fixed_returns.fuc(), media_type="text/plain")
        # return getResultMsg(data,"请求成功",200)
    except Exception as e:
        return getError(str(e), 500) 
    



# CORS 设置
app.add_middleware(
    CORSMiddleware,
    allow_origins=["*"],  # 允许所有源，具体使用时可以替换为允许的源列表
    allow_credentials=True,
    allow_methods=["*"],  # 允许所有HTTP方法
    allow_headers=["*"],  # 允许所有头部
)


if __name__ == '__main__':
    setup_logging()
    uvicorn.run(app, host='0.0.0.0', port=Config.PORT)
    logger = logging.getLogger(__name__)
    logger.info("程序启动")
